//配置路由
import Vue from 'vue'
import VueRouter from 'vue-router'

//使用插件
Vue.use(VueRouter)
//引入路由组件

import routes from './routes'

//先把Vuerouter原型对象的push，先保存一份
let originPush = VueRouter.prototype.push;
let originReplace = VueRouter.prototype.replace;

//重写push|replace
// 第一个参数：告诉原来的push方法，你往哪里跳
//第二个参数：成功的回调
//第三个参数：失败的回调
VueRouter.prototype.push = function(location,resolve,reject){
    if(resolve && reject){
        // call || this.apply区别：相同点，都可以调用函数一次，都可以篡改函数的上下文一次
        // 不同点：call与apply传递参数，call传递参数用逗号隔开，apply方法执行，传递数组
        originPush.call(this,location,resolve,reject)
    }else{
        originPush.call(this,location,()=>{},()=>{})
    }
}
VueRouter.prototype.replace = function(location,resolve,reject){
    if(resolve && reject) {
        originReplace.call(this.location,resolve,reject)
    }else {
        originReplace.call(this,location,()=>{},()=>{});
    }
}

export default new VueRouter({
    routes,
    scrollBehavior(to,from,savePosition){
        return {x:0,y:0}
    }
})